Traduction d'une boucle faire tant que en assembleur 68K |
Le dictionnaire des variables
correspondant à l'algorithme est (visualiser
l'algorithme):
Le choix de l'allocation est arbitraire. Ce choix est généralement guidé par les contraintes imposées par le cahier des charges. La notation entier.b n'est pas normalisée. Elle est appliquée au choix qui est fait ici d'implanter cet algorithme en assembleur 68K. Enfin, le fait qu'en assembleur, il n’est possible que de faire une opération par instruction, il est nécessaire d'ajouter une variable intermédiaire denum.result allouée dans d3. La traduction de l'algorithme donne :
début
: move.b #$ff,d2
* result
<- 0 * faire faire: add.b #$1,d2
* result <- result + 1 move.b d2,d3 * d3
<- result
mulu.b d1,d3 * d3 <- result.denum cmp.b d0,d3 bcs
faire * si (result.denum < a) alors cmp.b
d3,d0 bcs alors * finsi retour rts * fin du code alors : sub.b
#$1,d2 * result <- result – 1 bra retour |